/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.svh.Reporte;

import com.svh.Entidad.DetallePedido;
import com.svh.Entidad.Empleado;
import com.svh.Entidad.Pedido;
import com.svh.Servicios.EmpleadoServicio;
import com.svh.Servicios.PedidoServicio;
import com.svh.Utils.Utilitario;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.ServletOutputStream;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;

/**
 *
 * @author David
 */
public class ReporteIR {

    public void reporteDetPedido(int idPedido, ServletOutputStream outputStream) throws JRException {
        PedidoServicio pedidoServicio = new PedidoServicio();
        Pedido p = pedidoServicio.obtenerPedido(idPedido);
        EmpleadoServicio empleadoServicio = new EmpleadoServicio();
        Empleado e = empleadoServicio.obtenerEmpleadoporid(p.getEmpleado().getId());
        List<DetallePedido> misDetalles = new ArrayList<DetallePedido>(p.getDetallesPedidos());
        /////ruta de proyecto///
        String ruta = rutaResources();
        
        Map map = new HashMap();
        map.put("numPedido", p.getId());
        map.put("fecha", Utilitario.convertirFormatoFecha(p.getFechaRegistro(), "dd 'de' MMMMM 'del' yyyy  HH:mm:ss"));
        map.put("fechaEntrega", Utilitario.convertirFormatoFecha(p.getFechaEntrega(), "dd 'de' MMMMM 'del' yyyy"));
        map.put("cliente", p.getCliente().getClienteComun());
        map.put("vendedor", e != null ? (e.getApellidos() + ", " + e.getNombre()) : "-");
        map.put("direccion", p.getDireccion());
        map.put("observacion", p.getObservaciones());
        map.put("logo", ruta + "images" + File.separator + "halema_logo.gif");
        map.put("REPORT_LOCALE", Locale.US); 
        map.put("valida", p.isValidaEstEnvio());
        String rutaJasper = ruta + "reporte" + File.separator + "reportePedidos.jasper";
        JasperReport reportee = (JasperReport) JRLoader.loadObjectFromFile(rutaJasper);
        JasperPrint jprint = JasperFillManager.fillReport(reportee, map, new JRBeanCollectionDataSource(misDetalles));
        JasperExportManager.exportReportToPdfStream(jprint, outputStream);
    }
    
    private String rutaResources(){
        FacesContext ctx = FacesContext.getCurrentInstance();
        ServletContext servletCtx = (ServletContext) ctx.getExternalContext().getContext();
        String path = servletCtx.getRealPath("/");
        if (File.separator.equals("/")) {
            path = path.concat(File.separator + "resources" + File.separator );
        } else {
            path = path.concat("resources" + File.separator);
        }
        return path;
    }

}
